SSIS-Executando TSQL que não retorna Dados

Preliminares

Vimos na página anterior ( clique aqui para vê-la ) um exemplo completo para pegar um arquivo texto e carregar numa tabela do MS SQL Server

O exemplo é bem completo mas dá para melhorar. Um pré-requisito para que o exemplo do projeto anterior funcione é que a tabela MS SQL de destino dos dados não exista. Isto significa que o processo só poderia ser executado uma vez...na segunda vez daria erro por causa que a tabela já existe.

Para contornar o problema, neste exemplo, vamos dar um exemplo de como executar um T-SQL que não retorna dados, mais especificamente um drop table.

Um refinamento que acredito ser fundamental e que deve ter proteção caso a tabela não exista, ou seja, se a tabela não existir o T-SQL não faz nada e se existir, dropa a tabela

MS SQL - Integration Services


Como executar uma pesquisa simples que não retorna dados

Vou passando as instruções passo-a-passo.

Primeiramente precisamos ter um projeto SSIS para incorporar esta funcionalidade. Abra ele ou crie um novo.

1-Abra o Visual Studio Community Edition ( ou o seu predileto ) e crie um projeto SSIS.

2-Insira uma ‘Tarefa Executar Instrução T-SQL. Ela está na aba 'Outras Tarefas'

3-Clique 2x no box inserido.

Para dropar uma tabela você precisa definir de que servidor, base de dados, etc...A gente faz isso na definição da conexão.
3.1-Na caixa 'Conexão' clique no botão ‘Novo’, se ainda não tiver nenhuma conexão definida.

Defina o acesso ao servidor SQL, ou mais precisamente, os dados da conexão:

•    Nome da conexão
. Pode ser qualquer nome, apenas identifica a conexão para que você saiba em que servidor, bd, a tarefa estará se conectando.

•    Servidor ( IP ou nome )
Note que o Nome dependerá do servidor DNS e nem sempre é o melhor modelo porque o servidor DNS pode demorar a responder.

•    Clicar em ‘Usar nome de usuário e senha específicos’ caso a autenticação seja via ‘MS SQL’
Digite nessas caixas o usuário e a senha para conexão com o servidor SQL Server.

Para terminar clique no botão ‘OK’. No rodapé da página no visual studio, no box 'Connection Manager' deverá ser exibida sua nova conexão.

3.2-Na caixa 'Instrução T-SQL' coloque o sql que será executado. No meu caso:

IF OBJECT_ID(N'dbo.Destino OLE DB', N'U') IS NOT NULL
   DROP TABLE [dbo].[Destino OLE DB];
GO

Você deve trocar o nome da tabela '[Destino OLE DB]' para a sua tabela.

Como citei anteriormente, coloquei a função drop da tabela condicionada a sua existência.
Porque na primeira vez a tabela que este processo for executado a tabela não existirá realmente e o processo dará erro.
Da segunda vez em diante, o problema não iria ocorrer mais a não ser que desse um erro na execução do T-SQL e dropasse a tabela e a nova tabela não fosse criada...ao reiniciar o processo o problema persistiria.

Clique no botão 'OK' e salve a tarefa.

Execute a tarefa...ela deve sempre retornar sucesso mesmo se a tabela existir ou não.


Se quiser você pode incorporar o processo de drop da tabela ao processo anterior. No Data-Flow nada muda mas no Control-Flow muda.

Antes:

Depois:

Recomendo mudar o nome das coisas para o que elas estão fazendo. Por exemplo ao invés de 'Tarefa de Executar T-SQL 1' que não diz absolutamente nada sugiro trocar por 'Drop table [Destino OLE DB]'. E assim o mesmo para os outros itens. Num projeto complexo ficaria fácil de entender o que cada etapa está processando.